package com.itheima.admin.controller;

import com.itheima.admin.dto.AdSensitivePageRequestDto;
import com.itheima.admin.pojo.AdSensitive;
import com.itheima.admin.service.AdSensitiveService;
import com.itheima.common.vo.PageResultVo;
import com.itheima.core.controller.AbstractCoreController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @version 1.0
 * @description 说明
 * @package com.itheima.admin.controller
 */
@RestController
@RequestMapping("/sensitive")
@Api(tags = "敏感词管理")
public class AdSensitiveController extends AbstractCoreController<AdSensitive> {

    // 为什么老师这里使用@Resource，不使用@Autowired?
    // @Autowired按类型来注入，按属性名注入。在spring容器中 一个接口有多个实现时。
    // @Autowired+@Qualifier=@Resource
    // spring官方推荐使用@Resource 属于jdk
    //@Resource 变成第二次注入  ② 属性初始化
    private AdSensitiveService adSensitiveService;

    //Spring创建bean对象时，默认使用类型的方式做依赖的注入
    public AdSensitiveController(AdSensitiveService adSensitiveService) {
        super(adSensitiveService);
        this.adSensitiveService = adSensitiveService;
        //① 先执行构造方法
    }

    /**
     * 敏感词分页查询
     * @param dto
     * @return
     */
    @PostMapping("/list")
    @ApiOperation("敏感词分页查询")
    public PageResultVo list(@RequestBody AdSensitivePageRequestDto dto){
        // 接收请求：请求/channel/list，接收参数: dto
        // 调用业务层
        PageResultVo vo = adSensitiveService.findPage(dto);
        // 响应结果
        return vo;
    }

}
